/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ialsynth2012;

import java.sql.*;


/**
 *
 * @author Jonas
 */
public class PresetHandler {
    private SynthPreset[] synthPreset;
    public PresetHandler(){
        update();
    }
    private void update(){
        try{
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            String URL = "jdbc:mysql://127.0.0.1:3306/preset_database?user=root&password=ljuddesign";
            Connection connection = DriverManager.getConnection(URL);
            Statement statement = connection.createStatement();
            ResultSet result = statement.executeQuery("SELECT * FROM presets");
            int i = 0;
            while(result.next()){
                synthPreset[i].setWaveform(result.getInt("waveform"));
                synthPreset[i].setAttack(result.getFloat("attack_value"));
                synthPreset[i].setDecay(result.getFloat("decay_value"));
                synthPreset[i].setSustain(result.getFloat("sustain_value"));
                synthPreset[i].setRelease(result.getFloat("release_value"));
                i++;
            }
            connection.close();
        }
        catch(Exception error){
            System.err.println("ERROR: " + error); 
        }
    }
    public void save(int selection, SynthPreset savePreset){
        try{
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            String URL = "jdbc:mysql://127.0.0.1:3306/preset_database?user=root&password=ljuddesign";
            Connection connection = DriverManager.getConnection(URL);
            Statement statement = connection.createStatement();
            ResultSet result = statement.executeQuery("SELECT * FROM presets");
            result.absolute(selection);
            result.updateInt("waveform", savePreset.getWaveform());
            result.updateFloat("attack_value", savePreset.getAttack());
            result.updateFloat("decay_value", savePreset.getDecay());
            result.updateFloat("sustain_value", savePreset.getSustain());
            result.updateFloat("release_value", savePreset.getRelease());
            connection.close();
        }
        catch(Exception error){
            System.err.println("Error: " +error);
        }
    }
    public SynthPreset load(int selection){
        /* Vet inte hur detta ska se ut är det så att PresetHandler innehåller själva insturmentet
         * och att det loadar genom att helt enkelt sätta variablerna från en viss preset?
         * Eller är loada något som instrumentet gör och genom att kalla på load får en preset returnad till sig?
         * Koden som är skriven här är alltså för det senare svaret. 
         */
        return synthPreset[selection];
    }
}
